﻿using System.Collections.Generic;
using System.Threading.Tasks;
using Jinjia.Approve.Entity.Entity.JJFlow;
using Jinjia.Approve.Model.VM.JJFlow;

namespace Jinjia.Approve.IRepository.JJFlow
{
    public interface IFlowNodeRepository
    {
        /// <summary>
        /// //根据模板获取所有节点
        /// </summary>
        /// <param name="template_id"></param>
        /// <returns></returns>
        Task<List<jj_node>> GetNodes(int template_id);

        /// <summary>
        /// //根据模板获取所有节点
        /// </summary>
        /// <param name="template_id"></param>
        /// <param name="node_type"></param>
        /// <returns></returns>
        Task<List<jj_node>> GetNodes(int template_id, int node_type);

        Task<jj_node> GetStartNode(int template_id);

        Task<int> Save(jj_node data);

        /// <summary>
        /// 返回已经生成的nodes plan
        /// </summary>
        /// <returns></returns>
        Task<List<jj_node>> GetNodesPlan(int flow_instance_id);

        Task<jj_node> GetById(int nodeId);

        Task<List<jj_node>> GetByIds(List<int> nodeIds);

        Task<List<Node>> GetNodeByInstanceIds(List<int> instanceIds);

        Task<bool> CheckNodeIsComplete(int instance_id, int template_id, int node_id);
    }
}